package com.rabbiter.fm.controller;

import com.rabbiter.fm.common.enums.ErrorMsg;
import com.rabbiter.fm.model.LifeShowModel;
import com.rabbiter.fm.service.LifeShowService;
import com.rabbiter.fm.vo.ResultVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.Cookie;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Date;

@CrossOrigin
@RestController
@RequestMapping("lifeShow")
public class LifeShowController {

    @Autowired
    private LifeShowService lifeShowService;

    /**
     * 发布生活秀
     *
     * @param lifeShowModel 生活秀实体对象
     * @return 操作结果
     */
    @PostMapping("add")
    public ResultVo addLifeShow(@RequestBody LifeShowModel lifeShowModel) {
        // 设置创建者信息
//        lifeShowModel.setPostUserName("普通用户"); // 假设当前用户为普通用户
        System.out.println("添加前的生活秀数据：" + lifeShowModel.toString());

        // 调用服务层方法发布生活秀
        if (lifeShowService.addLifeShow(lifeShowModel)) {
            System.out.println("发布成功的生活秀数据：" + lifeShowModel.toString());
            return ResultVo.success(lifeShowModel);
        }
        return ResultVo.fail(ErrorMsg.SYSTEM_ERROR);
    }

//    /**
//     * 分页查询生活秀
//     *
//     * @param title 标题（支持模糊查询）
//     * @param page  当前页码
//     * @param nums  每页显示的记录数
//     * @return 分页结果
//     */
//    @GetMapping("find")
//    public ResultVo findLifeShowItem(@RequestParam(value = "title", required = false) String title,
//                                     @RequestParam(value = "page", required = false) Integer page,
//                                     @RequestParam(value = "nums", required = false) Integer nums) {
//        // 默认值处理
//        if (null == title) {
//            title = "";
//        }
//        int p = 1; // 默认第一页
//        int n = 8; // 默认每页显示 8 条记录
//        if (null != page) {
//            p = page > 0 ? page : 1;
//        }
//        if (null != nums) {
//            n = nums > 0 ? nums : 8;
//        }
//
//        System.out.println("生活秀列表接受参数：page=" + p + ", nums=" + n);
//
//        // 调用服务层方法分页查询
//        return ResultVo.success(lifeShowService.findLifeShowItem(title, p, n));
//    }



    /**
     * 分页查询生活秀
     *
     * @param title 标题（支持模糊查询）
     * @param page  当前页码
     * @param nums  每页显示的记录数
     * @param agree 审核状态（0: 拒绝, 1: 同意, null: 返回全部数据）
     * @return 分页结果
     */
    @GetMapping("find")
    public ResultVo findLifeShowItem(@RequestParam(value = "title", required = false) String title,
                                     @RequestParam(value = "page", required = false) Integer page,
                                     @RequestParam(value = "nums", required = false) Integer nums,
                                     @RequestParam(value = "agree", required = false) Integer agree) {
        // 默认值处理
        if (null == title) {
            title = "";
        }
        int p = 1; // 默认第一页
        int n = 8; // 默认每页显示 8 条记录
        if (null != page) {
            p = page > 0 ? page : 1;
        }
        if (null != nums) {
            n = nums > 0 ? nums : 8;
        }

        System.out.println("生活秀列表接受参数：page=" + p + ", nums=" + n + ", agree=" + agree);

        // 调用服务层方法分页查询，并传递 agree 参数
        return ResultVo.success(lifeShowService.findLifeShowItem(title, p, n, agree));
    }



    /**
     * 获取某个生活秀详情
     *
     * @param id 生活秀 ID
     * @return 生活秀详情
     */
    @GetMapping("info")
    public ResultVo getLifeShowItem(@RequestParam Long id) {
        return ResultVo.success(lifeShowService.getLifeShowItem(id));
    }

    /**
     * 删除生活秀
     *
     * @param id 生活秀 ID
     * @return 操作结果
     */
    @GetMapping("delete")
    public ResultVo deleteLifeShow(@RequestParam Long id) {
        System.out.println("删除生活秀：" + id);

        // 调用服务层方法删除生活秀
        if (lifeShowService.deleteLifeShow(id)) {
            return ResultVo.success();
        }
        return ResultVo.fail(ErrorMsg.SYSTEM_ERROR);
    }

    /**
     * 根据ID更新agree字段的值
     *
     * @param id    主键ID
     * @param agree 新的agree值
     * @return 操作结果
     */
    @PostMapping("updateAgree")
    public ResultVo updateAgreeById(@RequestParam Long id,
                                    @RequestParam Integer agree) {
        System.out.println("更新生活秀agree字段：id=" + id + ", agree=" + agree);

        // 调用服务层方法更新agree字段
        if (lifeShowService.updateAgreeById(id, agree)) {
            return ResultVo.success();
        }
        return ResultVo.fail(ErrorMsg.SYSTEM_ERROR);
    }
}